package com.houkunlin.wake.lan.host;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.ReportingPolicy;

import java.util.List;

/**
 * 对象转换：主机信息
 *
 * @author HouKunLin
 */
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface HostInfoTransform {
    /**
     * 对象转换
     *
     * @param bean 原始对象
     * @return 转换结果
     */
    HostInfo toEntity(HostInfoForm bean);

    /**
     * 对象转换
     *
     * @param bean1 原始对象
     * @param bean2 目标对象
     */
    @Mapping(target = "id", ignore = true)
    HostInfo toEntity(HostInfoForm bean1, @MappingTarget HostInfo bean2);

    /**
     * 对象转换
     *
     * @param bean 原始对象
     * @return 转换结果
     */
    HostInfoVo toVo(HostInfo bean);

    /**
     * 对象转换
     *
     * @param beans 原始对象
     * @return 转换结果
     */
    List<HostInfoVo> toVo(List<HostInfo> beans);

    /**
     * 对象转换
     *
     * @param bean 原始对象
     * @return 转换结果
     */
    HostInfoVoNmap toNmapVo(HostInfo bean);

    /**
     * 对象转换
     *
     * @param beans 原始对象
     * @return 转换结果
     */
    List<HostInfoVoNmap> toNmapVo(List<HostInfo> beans);
}
